package object2;

/**
 * 4种访问修饰符
 */
public class AccessModifiers {

    public static void main(String[] args) {
        /*
                             四种访问修饰符的访问范围（控制方法和属性（成员变量）的访问权限）

            访问级别    访问控制修饰符    同类    同包    子类    不同包
            公开        public          √      √       √       √
            受保护      protected       √      √       √       ×
            默认        没有修饰符       √      √       ×       ×
            私有        private         √      ×       ×       ×

            1)修饰符可以用来修饰类中的属性、成员方法以及类
            2)只有默认的和public才能修饰类
            3)成员方法的访问规则和属性完全一样
         */


    }
}

class TestAccessModifiers {

    public int n1 = 100;

    protected int n2 = 200;

    int n3 = 300;

    private int n4 = 400;

    public void m1() {
        //在同一类中，可以访问 public protected 默认 private 修饰属性和方法
        System.out.println("n1 = " + n1 + "; n2 = " + n2 + "; n3 = " + n3 + "; n4 = " + n4);
    }

    protected void m2() {}

    void m3() {}

    private void m4() {}

    public void hi() {

        //在同一类中，可以访问 public protected 默认 private 修饰属性和方法
        m1();
        m2();
        m3();
        m4();
    }
}